From: Gianni Tedesco Date: Mon, 14 Mar 2011 17:13:15 +0000 (+0000) Subject: Allow tools to map arbitrarily large machphys_mfn_list on 32bit dom0 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=342392ddbe4f8910979472d9dfcdb76c78f0ea51;p=xen.git Allow tools to map arbitrarily large machphys_mfn_list on 32bit dom0 This permits suspend/resume to work with 32bit dom0/tools when system memory extends beyond 160GB (and up to 1TB). AFAICT the limit to MACH2PHYS_COMPAT_NR_ENTRIES is redundant since that refers to a limit in 32bit guest compat mappings under 64bit hypervisors, not userspace where there may be gigabytes of useful virtual space available for this. Suggested-by: Ian Campbell Signed-off-by: Gianni Tedesco --- diff --git a/xen/arch/x86/x86_64/compat/mm.c b/xen/arch/x86/x86_64/compat/mm.c index f567aabab8..2c050997b6 100644 --- a/xen/arch/x86/x86_64/compat/mm.c +++ b/xen/arch/x86/x86_64/compat/mm.c @@ -161,9 +161,7 @@ int compat_arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg) if ( copy_from_guest(&xmml, arg, 1) ) return -EFAULT; - limit = (unsigned long)(compat_machine_to_phys_mapping + - min_t(unsigned long, max_page, - MACH2PHYS_COMPAT_NR_ENTRIES(current->domain))); + limit = (unsigned long)(compat_machine_to_phys_mapping + max_page); if ( limit > RDWR_COMPAT_MPT_VIRT_END ) limit = RDWR_COMPAT_MPT_VIRT_END; for ( i = 0, v = RDWR_COMPAT_MPT_VIRT_START, last_mfn = 0;